home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / webx / rbget020.lzh / Date2Date.c next >
C/C++ Source or Header  |  1998-04-18  |  1KB  |  55 lines

  1. /* ô·òtò╢ÄÜù±é≡ò╧è╖é╡é─ tm ì\æóæ╠é╔æπôⁿé╡é─ò╘é╖ */
  2. /* Sun, 05 Apr 1998 23:59:59 GMT (RFC1123)üiÉäźüj */
  3. /* Sunday, 05-Apr-98 23:59:59 GMT (RFC850) */
  4. /* Sun Apr 5 23:59:59 1998 (ANSI C asctime) */
  5. /* é╠éRé┬é╠î`Ä«é╔æ╬ë₧ */
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9. #include <time.h>
  10.  
  11. void Date2Date (char *str, struct tm *time_stamp)
  12. {
  13.     char *month[]=
  14.     {
  15.         "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  16.         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
  17.     };
  18.     char month_str[4];
  19.     char *s = str;
  20.     int year;
  21.  
  22.     while (*s++ != ' ');
  23.  
  24.     switch (*(str + 3)) {
  25.     case ',':        /* RFC1123 */
  26.         sscanf (s, "%02d %3s %04d %02d:%02d:%02d",
  27.             &time_stamp->tm_mday, month_str, &year,
  28.             &time_stamp->tm_hour, &time_stamp->tm_min, &time_stamp->tm_sec);
  29.         time_stamp->tm_year = year - 1900;
  30.         break;
  31.  
  32.     case ' ':        /* ANSI C asctime */
  33.         sscanf (s, "%3s %d %02d:%02d:%02d %d",
  34.             month_str, &time_stamp->tm_mday,
  35.             &time_stamp->tm_hour, &time_stamp->tm_min, &time_stamp->tm_sec,
  36.             &year);
  37.         time_stamp->tm_year = year - 1900;
  38.         break;
  39.  
  40.     default:        /* RFC850 */
  41.         sscanf (s, "%02d-%3s-%02d %02d:%02d:%02d",
  42.             &time_stamp->tm_mday, month_str, &time_stamp->tm_year,
  43.             &time_stamp->tm_hour, &time_stamp->tm_min, &time_stamp->tm_sec);
  44.         break;
  45.     }
  46.  
  47.  
  48.     time_stamp->tm_mon = 0;
  49.     while ((strnicmp (month_str, month[time_stamp->tm_mon], 3))
  50.            && (time_stamp->tm_mon < 11)) {
  51.         time_stamp->tm_mon++;
  52.     }
  53.     time_stamp->tm_isdst = -1;
  54. }
  55.